"use strict";

var _class;

/* 
学习装饰器语法
*/

/* 
https://caniuse.com/?search=Decorator

*/

/* 
Targtet 就是我们装饰器修饰的这个类 装饰器的底层转换类似如下：

T = T(Person);


*/
function T(Targtet) {
  /* 可以对这个类进行扩充形成 对象的原型的方法和属性 */
  Targtet.prototype.type = 'human';

  Targtet.prototype.say = function () {
    console.log(' say hello ');
  };
  /* 扩展静态的属性和方法 */


  Targtet.isType = 'Person Human';

  Targtet.fn = function () {
    console.log('fn call...');
  };
}

let Person = T(_class = class Person {}) || _class;

const p1 = new Person();
console.log(p1);
console.log('对象的属性和方法的调用');
console.log(p1.type);
p1.say();
console.log('类的静态属性和方法的调用');
console.log(Person.isType);
Person.fn();